---
title: Out of Town Rotations
summary: Maintains out-of-town attorney rotation assignments by hearing location and effective date.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-25
---

# Out of Town Rotations

This screen maintains out-of-town rotation assignments for attorneys. It uses `clsAttorneyTableManager` from [SAIF.Application.Claim.Legal](../libraries/saif-application-claim-legal/overview.md) to load hearing-location filters, active attorney lookups, and rotation collections, and it edits rotation assignment data supplied by [SAIF.Business.Claim.Legal](../libraries/saif-business-claim-legal/overview.md).

## Entry conditions
- Request to `frmRotation.aspx` in the LegalMaintenance application.

## Fields

| Field | Control type | Purpose | Validation |
| --- | --- | --- | --- |
| `ddlFirmType` | DropDownList | Filters the grid by hearing location. | Items are loaded from `Manager.LocationCode`. |
| `dgFirm.HearingLocationCode` | Infragistics WebDataGrid bound field | Stores the hearing location for the rotation row. | Drop-down provider loaded from `Manager.LocationCode`. |
| `dgFirm.EffectiveDate` | Infragistics WebDataGrid bound field | Stores the assignment effective date. | Display format `MM/dd/yyyy`; no explicit page-level validation found in source. |
| `dgFirm.ExpirationDate` | Infragistics WebDataGrid bound field | Stores the assignment expiration date. | Display format `MM/dd/yyyy`; no explicit page-level validation found in source. |
| `dgFirm.AttorneyEmployeeID` | Infragistics WebDataGrid bound field | Stores the assigned attorney. | Drop-down provider loaded from `Manager.ActiveAttorneys`. |
| `hfSelectedRowIndex` | Hidden input | Stores the selected grid row index for client-side row selection state. | Set by `dgFirm_RowSelectionChanged`. |
| `hfGridHeight` | Hidden field | Stores the resized grid height for preference saving. | Saved only when numeric in `SavePrefs`. |
| `hfGridWidth` | Hidden field | Stores the resized grid width for preference saving. | Saved only when numeric in `SavePrefs`. |

## Operations

| Operation | Trigger | Description |
| --- | --- | --- |
| Retrieve filtered rotations | `btnRetrieve` click | Posts back and rebinds the grid using the selected `ddlFirmType` value, which `BindData` copies into `Manager.Filter` and `Manager.FilterName`. |
| Select row | `dgFirm` RowSelectionChanged | Stores the selected row index in `hfSelectedRowIndex`. |
| Insert rotation row | `SAIFMenuTop.InsertButton` click | Calls `Manager.InsertNewRotation()`, rebinds the grid, and begins edit mode on `AttorneyEmployeeID`. |
| Save rotation rows | `SAIFMenuTop.SaveButton` click | Saves dirty, valid rotation rows through `Controller.Write`; otherwise shows validation or no-save messages. |
| Delete rotation row | `SAIFMenuTop.DeleteButton` click | Deletes the selected rotation row by grid data key, then rebinds the grid. |
| Print rotation report | `SAIFMenuTop.PrintButton` click | Generates `Legal_Maint_RotationReport` XML through `Manager.RotationsByLocationReport()` and opens print preview. |
| Save grid preferences | `SAIFMenuTop.PrefsSetButton` click | Persists grid column and size preferences using `hfGridHeight` and `hfGridWidth`. |
| Clear grid preferences | `SAIFMenuTop.PrefsClearButton` click | Clears saved grid preferences, resets the grid to `590x503`, and shows a confirmation message. |

## Business rules

| Rule ID | Rule | Enforcement | Source |
| --- | --- | --- | --- |
| [BR-APP-001](../application/business-rules.md#br-app-001-ad-group-gated-view-only-mode-controls-toolbar-edits) | Users in view-only mode cannot insert, save, or delete out-of-town rotation rows from this screen. | `Page_Load` disables `DeleteButton`, `InsertButton`, and `SaveButton` when `Manager.IsInViewOnly`. | `LegalMaintenance\frmRotation.aspx.vb:45-50` |
| — | The selected hearing-location filter is assigned to `Manager.Filter` and `Manager.FilterName` before the rotation grid is rebound. | `BindData` | `LegalMaintenance\frmRotation.aspx.vb:69-83` |
| — | The page only writes rotation changes when `Manager.OutOFTownRotationCol` is dirty and valid; otherwise it shows either the no-save message or collection error messages. | `Save` | `LegalMaintenance\frmRotation.aspx.vb:102-115` |
| — | Deletion is attempted only when the rotation collection is valid, and the selected row's data key is passed to `Manager.DeleteRotation`. | `Delete` | `LegalMaintenance\frmRotation.aspx.vb:123-135` |

## Infragistics components

| Control ID | Control type | SAIF wrapper | Infragistics base | Purpose |
| --- | --- | --- | --- | --- |
| `dgFirm` | WebDataGrid | Direct Infragistics control (no SAIF wrapper) | `Infragistics.Web.UI.GridControls.WebDataGrid` | Displays and edits out-of-town rotation rows. |
| `WebResizingExtender1` | WebResizingExtender | Direct Infragistics control (no SAIF wrapper) | `Infragistics.WebUI.WebResizingExtender` | Captures client-side grid resizing for preference persistence. |

## Navigation

| Target | Trigger | Parameters |
| --- | --- | --- |
| `frmPrintPreview.aspx` | `SAIFMenuTop.PrintButton` click | `__SAIFPID=<ViewID>&Filename=/Legal_Maint_RotationReport` |
| `frmAttorneyProfile.aspx` | Postback when `Session.IsNewSession` is `True` | `msg=Your session has timed out` via `REDIRECTFORTIMEOUT` in `clsLegalMaintenanceAncestor`. |

## Sources
- LegalMaintenance\frmRotation.aspx
- LegalMaintenance\frmRotation.aspx.vb
